The present invention relates to computer networks. In particular, the present invention relates to establishing processor redundancy.
A network is a communication system that allows users to access resources on other computers and exchange messages with other users. A network is typically a data communication system that links two or more computers and peripheral devices. It allows users to share resources on their own systems with other network users and to access information on centrally located systems or systems that are located at remote offices. It may provide connections to the Internet or the networks of other organizations. The network typically includes a cable that attaches to network interface cards (NIC) in each of the devices within the network. Users may interact with network-enabled software applications to make a network request (such as to get a file or print on a network printer). The application may also communicate with the network software and network software then may interact with the network hardware to transmit information to other devices attached to the network.
An example of a network is a local area network (LAN). A LAN is a network that is located in a relatively small area, such as a department or building. A LAN typically includes a shared medium to which workstations attach and communicate with one another by using broadcast methods. With broadcasting, any device on the LAN can transmit a message that all other devices on the LAN can listen to. The device to which the message is addressed actually receives the message. Data is typically packaged into frames for transmission on the LAN.
FIG. 1 is a block diagram illustrating a network connection between a user 10 and a particular web page 20. This FIG. is an example which may be consistent with any type of network, including a LAN, a wide are network (WAN), or a combination of networks, such as the Internet.
When a user 10 connects to a particular destination, such as a requested web page 20, the connection from the user 10 to the web page 20 is typically routed through several routers 12A-12D. Routers are internetworking devices. They are typically used to connect similar and heterogeneous network segments into internetworks. For example, two LANs may be connected across a dial-up, integrated services digital network (ISDN), or a leased line via routers. Routers may also be found throughout the Internet. End users may connect to a local Internet service provider (ISP) (not shown), which are typically connected via routers to regional ISPs, which are in turn typically connected via routers to national ISPs.
If a router, such as router 12C, fails and is no longer able to route the desired connection, then the desired connection between the user 10 the desired web page 20 may be significantly delayed or unable to connect at all. To avoid this problem, a solution has been implemented by router manufacturers, such as Cisco Systems, that include two processors, a primary processor and a secondary processor, such that the secondary processor may take over as the main processor if the primary processor has either a hardware or software failure. Accordingly, such a solution provides redundancy to avoid failure of the router.
If the secondary processor is required to switch itself over to the primary processor, then the secondary processor typically reboots, establishes itself as the primary processor, and re-initializes the entire router to become the primary processor. The re-booting and re-initializing process can take a substantial amount of time, such as minutes, since software is typically reloaded from either the network or flash memory and the new primary processor needs to run through the router configuration. The router configuration typically controls how the router moves data traffic. The configuration typically controls the path of network packets on their way to their final destination. The router configuration can be highly complex. The more complex the router configuration, the longer it typically takes to configure the router. Re-booting the router may take approximately 30 seconds to 5 minutes.
Although such redundancy routers may contain two processors, the secondary processor is typically unavailable for any work which is normally assigned to the primary processor. The secondary processor typically runs an image that is separate and different from the image which is run by the primary processor. Accordingly, the secondary processor is typically unavailable for offloading any work from the primary processor.
It would be desirable for a router to provide redundancy without a substantial amount of down time for re-booting. It would also be desirable for such a router to offer an option of the secondary processor being able to off load work from the primary processor, thus making use of both processors simultaneously. The present invention addresses such needs.
The present invention relates to providing processor redundancy in a system such as a router. According to an embodiment of the present invention, in a system having two or more processors, initialization sequence is started. During the initialization sequence, a redundancy subsystem is initialized. The redundancy subsystem identifies the projects or assignments that are to be off loaded from the primary processor to the secondary processor. According to an embodiment of the present invention, the initialization sequence is then suspended and a discovery process is performed. During the discovery process, it is determined whether the processor running the initialization sequence is a primary or a secondary processor. If it is a secondary processor, then the initialization sequence remains suspended and the secondary processor monitors the health of the primary processor until a failure of the primary processor occurs. If a primary processor failure occurs, then the initialization process is resumed for the secondary processor, hence establishing the secondary processor as the new primary processor.
According to an embodiment of the present invention, if the processor running the initialization sequence is the primary processor, then the initialization process is resumed. Also according to an embodiment of the present invention, the suspension of the initialization sequence and performance of the discovery process preferably occurs prior to initialization of the driver subsystems. The remaining initialization sequence is then finished, and the system is run.
According to an embodiment of the present invention, each processor, both secondary and primary have the same image such that the same initialization sequence and suspension with the discovery process is performed in both the primary and secondary processors.
A method according to an embodiment of the present invention for establishing processor redundancy is presented. The method comprises providing a processor and suspending an initialization sequence of the processor. The method also determines whether the processor is a secondary processor; and resumes the initialization sequence if the processor is not a secondary processor.
A system according to an embodiment of the present invention for establishing processor redundancy is also presented. The system comprises a processor configured to suspend an initialization sequence of the processor. The processor is also configured to determine whether it is a secondary processor, and resumes the initialization sequence if the processor is not a secondary processor. The system also includes a memory coupled to the processor, and the memory is configured to provide instructions to the processor.